package com.itheima.upload.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.itheima.common.Base64Util;
import com.itheima.entity.dto.UploadDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.InputStream;

/**
 * @author :wujunjie
 * createTime :2022-12-22 23:06
 * description :
 */
@Component
public class OssTemplete {
    @Autowired
    private OssProperties ossProperties;

    public  String uploadForMq(UploadDto uploadDto) {

        // 文件存储路径
        // 组成部分1：年月日/ 命名图片存储的文件夹
        // 组成部分2：UUID/ 不重复，有顺序 编号生成规则
        // 组成部分3：文件后缀名
        String fileName = uploadDto.getFileName();

        InputStream is = Base64Util.base64ToInputStream(uploadDto.getSource());

        // OSS核心代码
        // build方法（参数1，参数2，参数3）
        // 参数1：endpoint：oss-cn-beijing.aliyuncs.com
        // 参数2：根据上述教程获取（账号）
        // 参数3：根据上述教程获取（密码）
        OSS ossClient = new OSSClientBuilder().build(ossProperties.getEndpoint(),ossProperties.getAccessKeyId(),ossProperties.getAccessKeySecret());
        // putObject(参数1，参数2，参数3）
        // 参数1：bucketName（取自bucket域名的第一段，类似：tom-tanhua）
        // 参数2：fileName，上传到oss上后的存储路径
        // 参数3：文件内容（字节输入流）
        ossClient.putObject(ossProperties.getBucketName(), fileName, is);
        // 关闭（结束）
        ossClient.shutdown();
        // OSS核心代码
        // 图片在aliyun上的存储规则是：域名 + 文件路径
        String ossUrl = ossProperties.getUrl() + "/" + fileName;
        return ossUrl;
    }

}
